Technical computing environments present a user, such as a scientist or engineer, with an environment that enables efficient analysis and generation of technical applications. In some technical computing environments, for example, users may perform advanced analyses, visualize data, and develop algorithms. Ideally, a technical computing environment enables a technical researcher or designer to efficiently and quickly perform tasks such as research, product development, software and system development, etc.
Existing technical computing environments may be implemented as or run in conjunction with a graphically-based environment. For example, in one existing graphically-based technical computing environment, models may be built by connecting graphical blocks, where each block may represent an object associated with functionality and/or data. Blocks may be hierarchical in the sense that each block itself may be implemented as one or more blocks. A user may, for instance, view the model at a high level, then select blocks to drill down into the model to see increasing levels of model detail.
In addition to block diagram-based modeling environments, technical computing environments may include state diagramming environments that provide design tools for modeling and simulating event or mode driven systems and subsystems. Such state diagramming environments may be used to represent finite state machines that include states and transitions between states.
A state diagramming environment may receive inputs from a block diagram-based modeling environment. The state diagramming environment may perform state-based processing based on the received inputs and may make outputs available to the block diagram-based modeling environment. Unfortunately, conventional state diagramming environments support only systems that include well-formed control flow and do not support state-based modeling of systems that include arbitrary or ill-condition control flow and continuous time systems.